package com.xq.shop.dao.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xq.shop.dao.domain.entity.Order;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xq.shop.dto.IntegerDto;
import com.xq.shop.dto.QueryOrderDto;
import com.xq.shop.vo.*;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * <p>
 * 订单表 Mapper 接口
 * </p>
 *
 * @author gaoxiaojin
 * @since 2024-07-30
 */
public interface OrderMapper extends BaseMapper<Order> {

    IPage<OrderVo> page(Page<Object> objectPage,@Param("dto") QueryOrderDto dto);

    OrderDetailVo detail(@Param("dto") IntegerDto dto);

    List<GoodsProcureVo> getGoodsProcureByOrderId(@Param("orderNumber") String orderNumber);

    List<OrderSalesVolumeVo> getOrderSalesVolume(@Param("startTime") Date startTime, @Param("endTime") Date endTime);

    double orderPlaceAmount(@Param("startTime")Date startTime, @Param("endTime") Date endTime);

    HomeDataVo getHomeData();

    TransactionVo getTransactionAnalysis(@Param("startTime")Date startTime, @Param("endTime") Date endTime);

    List<TranAnalysisLineVo> getPaymentTrends(@Param("dateList")List<Date> date);

    List<TranAnalysisLineVo> getConversionRateTrend(@Param("dateList")List<Date> date);

    List<TranAnalysisLineVo> getRevenueExpenditureStatement(@Param("dateList")List<Date> date);

    WebUserAnalysis getWebUserAnalysis(@Param("startTime")Date startTime, @Param("endTime") Date endTime);

    List<WebUserAnalysis> getWebUserAnalysisList(@Param("dateList")List<Date> date);
}
